<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <script>
        console.log(Array.prototype);

        /* 返回去重后的新数组 */
        Array.prototype.getNorepeatArr = function () {
            // console.log("repeat 令妹",this);

            /* 过滤 如果item首次出现的下标不等于当前item下标 则说明以前出现过 不予通过 */
            // this.filter(
            //     (item,index)=>{
            //         if(this.indexOf(item)===index){
            //             return true
            //         }
            //         return false
            //     }
            // )

            /* 返回去重的新数组 */
            return this.filter(
                (item, index) => this.indexOf(item) === index
            )
        }

        /* 原地去重 */
        Array.prototype.filterRepeat = function () {
            console.log("Array.prototype.filterRepeat");

            let index = 0
            while (index !== this.length) {

                /* 如果非首次出现 则干掉当前index对应的元素 */
                const item = this[index]
                if (this.indexOf(item) !== index) {
                    this.splice(index, 1)

                    // 开始看下一个
                    continue
                }

                // 如果没有删除动作 则向后移动游标
                index++
            }
        }
    </script>

    <script>
        let arr = [3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5, 8]
        console.log(Object.prototype.toString.call(arr));

        // 打印去重后的副本
        console.log(arr.getNorepeatArr());
        
        // 原地去重
        arr.filterRepeat()
        console.log(arr);

    </script>
</body>

</html>